#include <stdio.h>
#include <stdlib.h>

// 对构造类型来说，我们研究的套路是
// 定义/声明 大小 初始化/赋值 访问

// N  0 - N-1 for(int i = 0; i<N; i++)

// 1.未初始化
// 2.满初始化
// 3.部分初始化，其余部分清零；初始化清零。
// 4.越界初始化，禁止。 C 语言对于越界不检测，灵活
// 5.越界访问，禁止。 C 语言对于越界不检测
// 6.不指定大小初始化       =>经常出没


// 赋值
//    int arr[10]     越界的元素
//     {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}     数组

// 凡是构造函数，要么在定义的时初始化，不可以先定义再以初始化的方式赋值；
// 凡是基本类型，既可以在定义时初始化，也可以先定义再赋值。




int main()
{
#if 0
    int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};

//    printf("arr[0] = %d \n",arr[0]);
//    printf("arr[0] = %d \n",arr[0]);
//    printf("arr[1] = %d \n",arr[1]);
//    printf("arr[2] = %d \n",arr[2]);
//    printf("arr[3] = %d \n",arr[3]);
//    printf("arr[4] = %d \n",arr[4]);
//    printf("arr[5] = %d \n",arr[5]);
//    printf("arr[6] = %d \n",arr[6]);
//    printf("arr[7] = %d \n",arr[7]);
//    printf("arr[8] = %d \n",arr[8]);
//    printf("arr[9] = %d \n",arr[9]);

    for(int i = 0; i < 10; i++)
    {
        arr[i] = rand()%100;
    }

    for(int i = 0; i < 10; i++)
    {
         printf("arr[%d] = %d \n",i, arr[i]);
    }


    struct Stu
    {
        int a;
        char b;
    } s = {12,'c'};

#endif

    int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0,1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
    for(int i = 0; i < sizeof(arr)/sizeof(int); i++)
    {
         printf("arr[%d] = %d \n",i, arr[i]);
    }
//    printf("Hello World!\n");
    return 0;
}
